home *** CD-ROM | disk | FTP | other *** search
- /*
- ##########################################################################
- #### ####
- #### The MusicBox Project ####
- #### ============================ ####
- #### ####
- #### MusicBoxMisc.c ####
- #### ####
- #### Version 2.1os -- September 29, 2000 ####
- #### ####
- #### Copyright (C) 1994 Thomas Dreibholz ####
- #### 2000 Molbachweg 7 ####
- #### 51674 Wiehl ####
- #### Germany ####
- #### ####
- #### EMail: Dreibholz@bigfoot.com ####
- #### WWW: http://www.bigfoot.com/~dreibholz ####
- #### ####
- ##########################################################################
- */
- /***************************************************************************
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- ***************************************************************************/
-
- /* MusicBox Prozeduren */
-
- #include "MusicBox.h"
- #include "MusicBoxLibrary.h"
-
- #define xCHECKED (0xffff-CHECKED)
-
- extern int rand();
-
- extern UWORD ox,oy;
- extern BOOL IsIconify;
- extern BOOL NoReq;
- extern BOOL LowRes;
-
- extern struct Einstellungen Einstellungen;
- extern struct DiskObject CDMusicBox;
- extern struct Window *CDPlayerWnd;
- extern struct Menu *CDPlayerMenus;
- extern struct Gadget *CDPlayerGadgets[25];
- extern struct TextFont *Font;
- extern struct Screen *Scr;
- extern struct ThisCD *ThisCD;
- extern struct Katalog *Katalog;
- extern struct TextAttr topaz11;
- extern struct Screen *Scr;
- extern struct ThisDrive *ThisDrive;
- struct RastPort *rp;
-
-
- struct MenuItem *GetItem(mc,ic,sc)
- UWORD mc,ic,sc;
- {
- REGISTER UWORD i;
- register struct MenuItem *item;
- register struct MenuItem *sub;
- register struct Menu *menu;
-
- menu=CDPlayerMenus;
- for(i=1;i<mc;i++)
- {
- menu=menu->NextMenu;
- if(menu==NULL) return(0L);
- }
- item=menu->FirstItem;
- for(i=1;i<ic;i++)
- {
- item=item->NextItem;
- if(item==NULL) return(0L);
- }
- if(sc==0) return(item);
- item=item->SubItem;
- for(i=1;i<sc;i++)
- {
- item=item->NextItem;
- if(item==NULL) return(0L);
- }
- return(item);
- }
-
- LONG MultiRequest(titel,text,gads)
- UBYTE *titel,*text,*gads;
- {
- struct EasyStruct easy;
-
- easy.es_StructSize=sizeof(struct EasyStruct);
- easy.es_Flags=0;
- easy.es_Title=titel;
- easy.es_TextFormat=text;
- easy.es_GadgetFormat=gads;
- return(EasyRequestArgs(NULL,&easy,0L,0L));
- }
-
- void Error(text)
- UBYTE *text;
- {
- if(NoReq==FALSE) MultiRequest(GS(15,"Music Box - Error!"),text,GS(16,"Abort"));
- }
-
- void Information()
- {
- UBYTE tex[12];
- struct InfoStruct info;
-
- sprintf(&tex,"#%08lx",ThisCD->ID);
- info.Title=GS(17,"Music Box - Information");
- info.ProgName=TITEL;
- info.LowRes=LowRes;
- info.Icon=&CDMusicBox;
- info.Text[0].LeftEdge=95;
- info.Text[0].TopEdge=95;
- info.Text[0].Flags=ISTF_LEFT;
- info.Text[0].Text=GS(18,"Current CD:");
- info.Text[1].LeftEdge=95;
- info.Text[1].TopEdge=110;
- info.Text[1].Flags=ISTF_LEFT;
- info.Text[1].Text=GS(19,"ID number:");
- if(Einstellungen.Funktion!=STANDBY)
- {
- info.Text[2].LeftEdge=180;
- info.Text[2].TopEdge=95;
- info.Text[2].Flags=ISTF_LEFT;
- info.Text[2].Text=&Katalog->CDName;
- info.Text[3].LeftEdge=180;
- info.Text[3].TopEdge=110;
- info.Text[3].Flags=ISTF_LEFT;
- info.Text[3].Text=&tex;
- info.Text[4].LeftEdge=0;
- }
- else
- info.Text[2].LeftEdge=0;
- info.RegInfo=NULL;
- SleepPointer(CDPlayerWnd);
- InformationA(&info);
- ClearPointer(CDPlayerWnd);
- TesteLaufwerk();
- }
-
- struct Prefs
- {
- UWORD VolumenL;
- UWORD VolumenR;
- UBYTE AudioL;
- UBYTE AudioR;
- UBYTE Lock;
- UBYTE Kontrolle;
- UBYTE Anzeige;
- UBYTE Format;
- UBYTE AutoRepeat;
- UBYTE AutoStart;
- UBYTE AutoSave;
- UBYTE AutoLoad;
- UBYTE Kopplung;
- UBYTE AutoFlush;
- UBYTE Auswahlmodus;
- };
-
- struct Prefs Prefs;
-
- #define C1(x) Einstellungen.x=Prefs.x
- #define C2(x) Prefs.x=Einstellungen.x
-
- void PrefsZeigen()
- {
- REGISTER BOOL bool;
- REGISTER UWORD code;
- struct TagItem tag[2];
-
- ClearMenuStrip(CDPlayerWnd);
- ZeigeStatus();
- ZeigeLR();
- ZeigeCDInfo();
- ZeigeVolumen();
- tag[0].ti_Tag=GTSL_Level;
- tag[0].ti_Data=Einstellungen.VolumenR;
- tag[1].ti_Tag=TAG_DONE;
- GTSetGadgetAttrsA(CDPlayerGadgets[25],CDPlayerWnd,NULL,&tag);
- tag[0].ti_Tag=GTSL_Level;
- tag[0].ti_Data=Einstellungen.VolumenL;
- tag[1].ti_Tag=TAG_DONE;
- GTSetGadgetAttrsA(CDPlayerGadgets[23],CDPlayerWnd,NULL,&tag);
- switch(Einstellungen.AudioL)
- {
- case AUDIO_LINKS:
- code=0;
- break;
- case AUDIO_RECHTS:
- code=1;
- break;
- case AUDIO_BEIDE:
- code=2;
- break;
- case AUDIO_AUS:
- code=3;
- break;
- }
- tag[0].ti_Tag=GTCY_Active;
- tag[0].ti_Data=code;
- tag[1].ti_Tag=TAG_DONE;
- GTSetGadgetAttrsA(CDPlayerGadgets[21],CDPlayerWnd,NULL,&tag);
- switch(Einstellungen.AudioR)
- {
- case AUDIO_LINKS:
- code=1;
- break;
- case AUDIO_RECHTS:
- code=0;
- break;
- case AUDIO_BEIDE:
- code=2;
- break;
- case AUDIO_AUS:
- code=3;
- break;
- }
- tag[0].ti_Tag=GTCY_Active;
- tag[0].ti_Data=code;
- tag[1].ti_Tag=TAG_DONE;
- GTSetGadgetAttrsA(CDPlayerGadgets[22],CDPlayerWnd,NULL,&tag);
- tag[0].ti_Tag=GTCY_Active;
- tag[0].ti_Data=Einstellungen.Auswahlmodus;
- tag[1].ti_Tag=TAG_DONE;
- GTSetGadgetAttrsA(CDPlayerGadgets[28],CDPlayerWnd,NULL,&tag);
- if(Einstellungen.Kopplung) bool=TRUE; else bool=FALSE;
- tag[0].ti_Tag=GTCB_Checked;
- tag[0].ti_Data=bool;
- tag[1].ti_Tag=TAG_DONE;
- GTSetGadgetAttrsA(CDPlayerGadgets[26],CDPlayerWnd,NULL,&tag);
- if(Einstellungen.AutoRepeat)
- (GetItem(2,1,1))->Flags |= CHECKED;
- else
- (GetItem(2,1,1))->Flags &= xCHECKED;
- if(Einstellungen.AutoStart)
- (GetItem(2,1,2))->Flags |= CHECKED;
- else
- (GetItem(2,1,2))->Flags &= xCHECKED;
- if(Einstellungen.AutoSave)
- (GetItem(2,1,4))->Flags |= CHECKED;
- else
- (GetItem(2,1,4))->Flags &= xCHECKED;
- if(Einstellungen.AutoLoad)
- (GetItem(2,1,5))->Flags |= CHECKED;
- else
- (GetItem(2,1,5))->Flags &= xCHECKED;
- if(Einstellungen.AutoFlush)
- (GetItem(2,1,6))->Flags |= CHECKED;
- else
- (GetItem(2,1,6))->Flags &= xCHECKED;
- switch(Einstellungen.Kontrolle)
- {
- case AUS:
- (GetItem(2,5,1))->Flags |= CHECKED;
- (GetItem(2,5,2))->Flags &= xCHECKED;
- (GetItem(2,5,3))->Flags &= xCHECKED;
- break;
- case JOYSTICK_I:
- (GetItem(2,5,1))->Flags &= xCHECKED;
- (GetItem(2,5,2))->Flags |= CHECKED;
- (GetItem(2,5,3))->Flags &= xCHECKED;
- break;
- case JOYSTICK_II:
- (GetItem(2,5,1))->Flags &= xCHECKED;
- (GetItem(2,5,2))->Flags &= xCHECKED;
- (GetItem(2,5,3))->Flags |= CHECKED;
- break;
- }
- switch(Einstellungen.Format)
- {
- case ZEIT:
- (GetItem(2,3,1))->Flags |= CHECKED;
- (GetItem(2,3,2))->Flags &= xCHECKED;
- (GetItem(2,3,3))->Flags &= xCHECKED;
- (GetItem(2,3,4))->Flags &= xCHECKED;
- break;
- case ADRESSE:
- (GetItem(2,3,1))->Flags &= xCHECKED;
- (GetItem(2,3,2))->Flags |= CHECKED;
- (GetItem(2,3,3))->Flags &= xCHECKED;
- (GetItem(2,3,4))->Flags &= xCHECKED;
- break;
- case PROZENT:
- (GetItem(2,3,1))->Flags &= xCHECKED;
- (GetItem(2,3,2))->Flags &= xCHECKED;
- (GetItem(2,3,3))->Flags |= CHECKED;
- (GetItem(2,3,4))->Flags &= xCHECKED;
- break;
- case MEGABYTES:
- (GetItem(2,3,1))->Flags &= xCHECKED;
- (GetItem(2,3,2))->Flags &= xCHECKED;
- (GetItem(2,3,3))->Flags &= xCHECKED;
- (GetItem(2,3,4))->Flags |= CHECKED;
- break;
- }
- switch(Einstellungen.Anzeige)
- {
- case TRACK_ANFANG:
- (GetItem(2,2,1))->Flags |= CHECKED;
- (GetItem(2,2,2))->Flags &= xCHECKED;
- (GetItem(2,2,4))->Flags &= xCHECKED;
- (GetItem(2,2,5))->Flags &= xCHECKED;
- break;
- case CD_ANFANG:
- (GetItem(2,2,1))->Flags &= xCHECKED;
- (GetItem(2,2,2))->Flags |= CHECKED;
- (GetItem(2,2,4))->Flags &= xCHECKED;
- (GetItem(2,2,5))->Flags &= xCHECKED;
- break;
- case TRACK_ENDE:
- (GetItem(2,2,1))->Flags &= xCHECKED;
- (GetItem(2,2,2))->Flags &= xCHECKED;
- (GetItem(2,2,4))->Flags |= CHECKED;
- (GetItem(2,2,5))->Flags &= xCHECKED;
- break;
- case CD_ENDE:
- (GetItem(2,2,1))->Flags &= xCHECKED;
- (GetItem(2,2,2))->Flags &= xCHECKED;
- (GetItem(2,2,4))->Flags &= xCHECKED;
- (GetItem(2,2,5))->Flags |= CHECKED;
- break;
- }
- SetMenuStrip(CDPlayerWnd,CDPlayerMenus);
- }
-
- void KopierePrefs()
- {
- C2(VolumenL);
- C2(VolumenR);
- C2(AudioL);
- C2(AudioR);
- C2(Kopplung);
- C2(AutoSave);
- C2(AutoRepeat);
- C2(AutoStart);
- C2(Format);
- C2(Kontrolle);
- C2(Anzeige);
- C2(AutoLoad);
- C2(AutoFlush);
- C2(Auswahlmodus);
- }
-
- void PrefsLaden()
- {
- register struct FileHandle *fh;
-
- SleepPointer(CDPlayerWnd);
- fh=Open("S:MusicBox.config",MODE_OLDFILE);
- if(fh!=NULL)
- {
- Read(fh,&Prefs,sizeof(struct Prefs));
- Close(fh);
- C1(VolumenL);
- C1(VolumenR);
- C1(AudioL);
- C1(AudioR);
- C1(Kopplung);
- C1(AutoSave);
- C1(AutoRepeat);
- C1(AutoStart);
- C1(Format);
- C1(Kontrolle);
- C1(Anzeige);
- C1(AutoLoad);
- C1(AutoFlush);
- C1(Auswahlmodus);
- SetzeLR();
- Volumen();
- AuswurfLock();
- if(IsIconify==FALSE)
- PrefsZeigen();
- }
- else
- KopierePrefs();
- ClearPointer(CDPlayerWnd);
- }
-
- void PrefsSichern()
- {
- register struct FileHandle *fh;
-
- SleepPointer(CDPlayerWnd);
- fh=Open("S:MusicBox.config",MODE_NEWFILE);
- if(fh!=NULL)
- {
- KopierePrefs();
- Write(fh,&Prefs,sizeof(struct Prefs));
- Close(fh);
- }
- ClearPointer(CDPlayerWnd);
- }
-
- void Gesamtkatalog()
- {
- REGISTER UBYTE flags;
-
- SichereKatalog();
- if(LowRes) flags=OA_LOWRES; else flags=0;
- SleepPointer(CDPlayerWnd);
- if(Einstellungen.Funktion!=STANDBY)
- OpenArchive(Katalog->DiscID,Einstellungen.Track,flags);
- else
- OpenArchive(0,0,flags);
- ClearPointer(CDPlayerWnd);
- }
-
- #asm
- public _ExpungeLibrary
-
- _ExpungeLibrary:
- move.l a6,-(sp)
- move.l 8(sp),a6
- jsr -18(a6)
- move.l (sp)+,a6
- rts
- #endasm
-
- void KillLibrary(lib)
- struct Library *lib;
- {
- Forbid();
- RemLibrary(lib);
- lib->lib_OpenCnt--;
- ExpungeLibrary(lib);
- Permit();
- }
-
- void AboutDrive()
- {
- struct InfoStruct info;
-
- info.Title=GS(59,"Music Box - About CD-drive");
- info.ProgName=TITEL;
- info.Icon=&CDMusicBox;
- info.LowRes=LowRes;
- info.Text[0].LeftEdge=95;
- info.Text[0].TopEdge=85;
- info.Text[0].Flags=ISTF_LEFT;
- info.Text[0].Text=GS(60,"Vendor:");
-
- info.Text[1].LeftEdge=95;
- info.Text[1].TopEdge=100;
- info.Text[1].Flags=ISTF_LEFT;
- info.Text[1].Text=GS(61,"Product:");
-
- info.Text[2].LeftEdge=95;
- info.Text[2].TopEdge=115;
- info.Text[2].Flags=ISTF_LEFT;
- info.Text[2].Text=GS(62,"Revision:");
-
- info.Text[3].LeftEdge=180;
- info.Text[3].TopEdge=85;
- info.Text[3].Flags=ISTF_LEFT;
- info.Text[3].Text=&ThisDrive->Vendor;
-
- info.Text[4].LeftEdge=180;
- info.Text[4].TopEdge=100;
- info.Text[4].Flags=ISTF_LEFT;
- info.Text[4].Text=&ThisDrive->Product;
-
- info.Text[5].LeftEdge=180;
- info.Text[5].TopEdge=115;
- info.Text[5].Flags=ISTF_LEFT;
- info.Text[5].Text=&ThisDrive->Revision;
- info.Text[6].LeftEdge=0;
- info.RegInfo=NULL;
- SleepPointer(CDPlayerWnd);
- InformationA(&info);
- ClearPointer(CDPlayerWnd);
- }
-
- void AboutCD()
- {
- SleepPointer(CDPlayerWnd);
- if(Einstellungen.Funktion!=STANDBY) DisplayCatalog(Katalog,LowRes);
- ClearPointer(CDPlayerWnd);
- }
-
- void Randomize()
- {
- ULONG array[2];
-
- ReadEClock(&array);
- srand((FLOAT)array[1]);
- }
-
- int Random(max)
- int max;
- {
- register int x;
-
- if(max==0) return(1);
-
- x=rand() % max;
- x++;
- return(x);
- }
-
- void Print()
- {
- register struct Katalog *cat;
-
- if(Einstellungen.Funktion!=STANDBY) cat=Katalog; else cat=NULL;
- PrintIt(CDPlayerWnd,cat);
- }
-
-